草庐IT

trace32 if else

全部标签

c# - x64 和 x32 中的不同行为展开堆栈

为什么在下面详述的场景中,堆栈空间在x64中增加而在x32中减少,代码相同?背景:我们的客户可以使用领域语言编写脚本,该语言在运行时使用递归技术进行解释并在网络服务器上执行。他们可能会在脚本中犯错误而引发异常,该异常会被捕获并记录。由于这种递归技术,我们通过检查解释器执行脚本时使用的堆栈空间来防止堆栈溢出异常,并在我们实际用完堆栈之前终止脚本。在32位模式下一切正常,当脚本编写器出错时Exception生成,记录,堆栈展开,在此期间堆栈上剩余的空间增加并且脚本很好地终止。在64位模式下,一切都不太好,当脚本编写器出错时Exception生成,记录,堆栈展开,在此期间堆栈上剩余的空间减少

c# - 是否可以拆分进行 CRC-32 计算?

我使用这个简单的函数来计算给定文件的CRC校验和:longi,j=0;intk=0;uintcrc=0xFFFFFFFF;FileInfofile_info=newFileInfo(file);byte[]file_buffer=newbyte[32768];FileStreamfile_stream=newFileStream(@file,FileMode.Open);while((i=file_stream.Read(file_buffer,0,file_buffer.Count()))>0){for(j=0;j>8)&0x00FFFFFFL)^crc32_table[k];crc

c# - 为什么每个 Char static "Is..."都有一个字符串重载,例如IsWhiteSpace(字符串,Int32)?

http://msdn.microsoft.com/en-us/library/1x308yk8.aspx这允许我这样做:varstr="string";Char.IsWhiteSpace(str,6);而不是:Char.IsWhiteSpace(str[6]);似乎不寻常,所以我看了看倒影:[TargetedPatchingOptOut("PerformancecriticaltoinlineacrossNGenimageboundaries")]publicstaticboolIsWhiteSpace(charc){if(char.IsLatin1(c)){returnchar.I

c# - 为什么 BitVector 32 结构比 BitArray 更高效?

BitArray和BitVector32结构有什么区别,BitVector32结构相对于BitArray有什么优势?为什么BitVector32结构比BitArray更高效?提前致谢。周杰... 最佳答案 BitVector32ismoreefficientthanBitArrayforBooleanvaluesandsmallintegersthatareusedinternally.ABitArraycangrowindefinitelyasneeded,butithasthememoryandperformanceoverhe

c# - 如何使用 Shell32.SHGetFileInfo 在 Windows 7 上获取文件夹图标

我有以下适用于WindowsXP和Vista的代码-32位和64位:publicstaticIconGetFolderIcon(IconSizesize,FolderTypefolderType){//Needtoaddsizecheck,althougherrorsgeneratedatpresent!uintflags=Shell32.SHGFI_ICON|Shell32.SHGFI_USEFILEATTRIBUTES;if(FolderType.Open==folderType){flags+=Shell32.SHGFI_OPENICON;}if(IconSize.Small==

c# - 使用 Interlocked.Exchange 更新引用和 Int32

众所周知,引用在32位处理器中占用4字节内存,在64位处理器中占用8字节内存。因此,处理器保证以机器的自然字大小为增量对内存进行单次读取和写入将以原子方式执行。另一方面,Interlocked类中有2个方法:publicstaticintExchange(refintlocation1,intvalue)和publicstaticTExchange(refTlocation1,Tvalue)whereT:class那么,问题是为什么Int32和引用类型需要Interlocked.Exchange?因为它是原子的,所以仅仅使用简单的赋值不能安全地完成吗? 最佳

c# - WIN32_Processor::ProcessorId 是否对所有计算机都是唯一的

我想为许可系统使用一些独特的东西。我决定使用Win32_ProcessorManagement类中的ProcessorID。我尝试了两个具有相同处理器类型的不同系统..它显示两个系统的处理器ID相同。我正在使用这段代码publicstaticStringGetCPUId(){StringprocessorID="";ManagementObjectSearchersearcher=newManagementObjectSearcher("Select*FROMWIN32_Processor");ManagementObjectCollectionmObject=searcher.Get

c# - 长整数可以在 32 位系统上工作吗?

如果我理解正确的话,一个int变量正在保存32位,将它限制在-20亿到20亿之间。但是,如果我使用长变量,它将保存为64位,从而可以存储更多数字。我使用的是64位系统,但如果我以64位存储数据,我的代码能否在32位系统上正常运行?谢谢! 最佳答案 你不用担心这个。long值将存储在2个内存地址中。Int64/long将始终为64位,而Int32/int将始终为32位。有一些影响(关于内存空间和性能),但最值得注意的可能是写/读操作在32位系统上不是原子的,但你不应该期望它们无论如何都是原子的,因为c#规范不提供此类保证。无论哪种方式

c# - 我们在哪里使用 Debug/Trace 语句

我使用C#(使用VSIDE)进行开发。我对调试/跟踪语句感到困惑。我们在哪里以及为什么使用这些语句?我经常在其他开发人员的源代码中看到这些。谁能指点一下? 最佳答案 Debug语句仅出现在Debug版本中。Trace语句存在于调试和发布版本中。为了调试或检查,您可以将Debug和Trace语句放在要输出某些值的地方。这篇MS支持文章可能会引起您的兴趣:HowtotraceanddebuginVisualC#TheTraceclassroutesmessagestolisteners:classesthataredesignedtoa

c# - 检查 List<Int32> 值是否连续

ListdansConList=newList();dansConList[0]=1;dansConList[1]=2;dansConList[2]=3;ListdansRandomList=newList();dansRandomList[0]=1;dansRandomList[1]=2;dansRandomList[2]=4;我需要一个方法,在评估上述列表时,将返回false对于dansRandomList和true对于dansConList基于事实dansConList在它的值中有一个连续的数字序列,而dansRandomList没有(缺少值3)。如果可能,最好使用LINQ。我尝